package com.xdb.presistence.table;

import java.util.List;
import java.util.Map;
/**
 * XDB中表对象
 * @author woate
 *
 */
public interface XDBTable {
	/**
	 * 清空表的数据，无事务
	 * 
	 * @return 清空记录的条数
	 */
	int truncate();

	/**
	 * 向表中插入数据
	 * 
	 * @param rows
	 *            多行数据
	 * @return
	 */
	int insert(XDBTableRow... rows);

	/**
	 * 按照输入的关键字条件进行删除

	 * @param keywords
	 *            输入的各列中需要查找的值,如果当前列没有关键字或条件则空
	 * @return 删除记录的条数
	 */
	int delete(Map<String, String> keywords);

	/**
	 * 按照输入的表名如果更新的内容是函数或者原字段信息会在调用该方法前进行计算处理和查找要更改的数据,所以只有最新值得行用于进行更新
	 * @param newRows 更新后的新行
	 * @return 更新条数
	 */
	int update(XDBTableRow... newRows);

	/**
	 * 按照字段输入的关键字进行查询,这是关于单表的查询，如果要进行多表关联，则需要根据筛选条件查询多个表之后再虚表中完成重组

	 * @param keywords
	 *            输入的各列中需要查找的值,如果当前列没有关键字或条件则空
	 * @return
	 */
	List<XDBTableRow> select(Map<String, String> keywords);
}
